Модульное тестирование на PHP. PHPUnit. Введение: Тестирование – это некая проверка чего-либо. То есть проверка кода на работоспособность, проверка разработанного функционала на соответствие определенным параметрам и т.д. Другими словами, тестирование – это выполнение определенных шагов по проверке кода проекта и выдача соответствующих результатов. При этом, конечно же, возникает вполне предсказуемый вопрос: зачем тестировать приложение, если оно и так работает? В качестве ответа можно сказать следующее: рано или поздно в проект придется вносить правки либо по доработкам, либо по расширению функционала. Это может привести к тому, что некоторая часть проекта перестанет работать или будет работать, но не так как ожидалось. При этом поиск и исправление ошибок может оказаться довольно трудоемкой и время затратной операцией. Поэтому во избежание указанных проблем, для хороших проектов, желательно всегда писать тесты и запускать тестирование после каких-либо доработок, потому как Вы не просто проверите Ваш код, но и быстро узнаете, где проблема в случае не удачного завершения одного из тестов. Представляем Вашему вниманию видео курс по изучению модульного тестирования на языке PHP с использованием наиболее популярного инструмента по созданию тестов – фреймворка PHPUnit. В данном курсе будет рассмотрена установка и конфигурирование PHPUnit, определение провайдеров данных, создание тестов, создание двойников для подмены реальных классов проекта, определение фикстур, создание отчетов для анализа результатов тестирования, а также создание тестов в фреймворке Laravel. Урок 1. Модульное тестирование на PHP. PHPUnit. Установка PHPUnit: От автора: тестирование – это довольно важный этап разработки как веб-приложения, так и любого другого программного продукта. Но как показывает практика, этот шаг просто упускается ввиду определенных причин: нехватка времени, бюджета или, банально, знаний, как это правильно делается. Поэтому в первом уроке курса по модульному тестированию на PHP будет рассмотрена установка одного из наиболее популярных инструментов для создания тестов – фреймворка PHPUnit. При этом будет показана настройка IDE PHPStorm для работы в связке с PHPUnit, а также создание простейшего конфигурационного файла для запуска тестов в автоматическом режиме. Урок 2. Модульное тестирование на PHP. PHPUnit. Первые тесты: От автора: в данном видео Вы увидите создание простейших тестов, используя фреймворк PHPUnit. При этом Вы узнаете, каким образом запустить на исполнение как отдельные тесты, так и все сразу, что такое провайдеры данных и как они создаются, а также как создавать зависимые тесты. По итогам текущего урока Вы увидите, по какой структуре создаются классы тестов и какие методы они могут содержать, а также в каком виде представляются результаты тестов в PHPUnit и как отображаются ошибки. Урок 3. Модульное тестирование на PHP. PHPUnit. Тестирование исключений: От автора: исключительные ситуации возникают и будут возникать при разработке или поддержке веб-приложений, так как невозможно при написании кода предугадать абсолютно все. При этом, для обработки исключений, порой приходится писать довольно сложную логику, которая также подлежит тестированию. Поэтому в этом видео Вы увидите тестирование исключений и возникающих ошибок. По итогам данного урока Вы узнаете, как тестировать генерацию исключений и какие методы фреймворка для этого используются, а также как обходить ошибки, для тестирования кода. Урок 4. Модульное тестирование на PHP. Тестирование вывода данных на экран: От автора: отображение информации на экран – это цель большинства веб-приложений, а значит выводимые данные также можно и нужно тестировать. Поэтому в данном уроке будет рассмотрено тестирование отображаемых данных с использованием фреймворка PHPUnit. По итогам данного урока Вы узнаете, как провести тестирование отображаемой информации, а также как создать отчет о выполненных тестах. Урок 5. Модульное тестирование на PHP. Этапы жизни объекта класса теста: От автора: для запуска тестов необходимы входные данные соответствие которых будет проверяться в методах класса теста. Причем формирование указанных данных, как правило, отбирает больше времени, чем сам тест. Поэтому в данном уроке будут рассмотрены методы, которые последовательно вызываются в каждом тесте и формируют цепочку этапов жизни объекта класса теста. По итогам данного урока Вы узнаете, какие методы автоматически вызываются в процессе работы фреймворка и как их можно использовать для формирования входных данных. Урок 6. Модульное тестирование на PHP. Организация тестов: От автора: как Вы могли заметить, PHPUnit – очень гибкий и удобный фреймворк, который при правильной настройке выполняет практически все сам и формирует отчеты о проделанной работе. Поэтому в данном уроке будут рассмотрены вопросы по правильной организации тестовых классов, а также некоторые доступные параметры настроек. По итогам урока Вы узнаете, как работать с пустыми тестами, как пропустить выполнение некоторого теста, что такое рискованные тесты и как задать максимально допустимое время выполнения теста. Урок 7. Модульное тестирование на PHP. Тестовые двойники. Часть 1: От автора: как правило, когда речь идет об архитектуре проекта, то подразумевается некая совокупность классов, которые определенным образом взаимодействуют друг с другом. А это значительно усложняет тестирование одного конкретного класса, ведь методы, которые подлежат проверке, в своей работе зависят от методов других классов. Поэтому в текущем уроке будет рассмотрен механизм по созданию тестовых двойников, тех классов, от которых зависит работоспособность тестируемой системы. По итогам данного урока Вы узнаете, зачем нужны тестовые двойники, что они собой представляют, как именно они создаются и как они помогают тестировать классы, работоспособность которых зависит от других классов. Урок 8. Модульное тестирование на PHP. Тестовые двойники. Часть 2: От автора: в прошлом уроке была показана методика тестировании класса, работоспособность которого зависела от другого стороннего класса, используя тестовый двойник. При этом тестирование было направлено на проверку возвращаемых данных определенного метода. В текущем видео будет рассмотрен процесс тестирования, вызова конкретного метода класса, тестового двойника с определенными параметрами. По итогам урока Вы узнаете, как проверить правильность вызова на исполнение определенного метода класса, а также как протестировать передаваемые в тестируемый метод аргументы. Урок 9. Модульное тестирование на PHP. Mockery — удобный инструмент по созданию двойников: От автора: в предыдущих двух уроках Вы увидели, каким образом создаются тестовые двойники и как они помогают в тестировании классов, работоспособность которых зависит от других. Но Вы, скорее всего, обратили внимание, что сам механизм, предоставляемый фреймворком PHPUnit для создания двойников, достаточно сложен и не совсем нагляден. Поэтому в текущем уроке будет рассмотрена альтернатива – библиотека Mockery, которая предоставляет удобный интерфейс по созданию тестовых двойников. В текущем видео на примере тестирования классов из предыдущих уроков Вы увидите, как использовать инструмент Mockery для более быстрого и удобного создания тестовых заглушек. Урок 10. Модульное тестирование на PHP. Встроенные методы тестирования: От автора: в уроках данного Премиум курса неоднократно использовались различные методы тестирования предоставляемые фреймворком. Методы, которые непосредственно реализуют проверку на соответствие определенным условиям и именно в них содержится суть того или иного теста. Другими словами, в большинстве случаев эти инструменты используются для проверки различных утверждений по тестируемой системе. Поэтому в этом видео будут рассмотрены наиболее часто используемые методы тестирования PHPunit. По итогам данного урока Вы увидите, какие методы тестирования из группы Assertions предоставляет фреймворк PHPUnit для тестирования на соответствие различным условиям. Урок 11. Модульное тестирование на PHP. Пример тестирования класса по работе с пользователями: От автора: тема тестирования классов и всего приложения в целом довольно сложная для понимания. При этом я сейчас говорю не о самом фреймворке PHPUnit и изучении его инструментов, я говорю о самом процессе и логике тестирования, то есть о том, как проводить тестирование готовых классов и какие тесты писать. В текущем уроке Вы увидите на примере для одного практически готового к использованию класса процесс написания тестов. В этом видео будет показан полный процесс разработки одного элемента системы проекта — от написания класса до полного покрытия его кода тестами. Урок 12. Модульное тестирование на PHP. Анализ покрытия кода: От автора: при тестировании крупных приложений довольно сложно покрыть тестами абсолютно весь код бизнес логики. Потому, работая с огромным количеством классов, сложно вести учет, о том, какие классы протестированы, а какие нет. На помощь в этой ситуации приходит механизм анализа покрытия кода в отчетах тестирования PHPUnit. Поэтому в текущем видео мы с Вами поговорим о том, что такое покрытие кода и какие критерии бывают для определения степени тестирования программного кода. Так же создадим отчет о тестировании класса из предыдущего урока, проанализируем количество написанных тестов и наконец, на основе полученных данных обеспечим стопроцентную покрываемость тестами рассмотренного примера.